home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / util / pack / codecs_library.lha / Codecs / main.c < prev    next >
C/C++ Source or Header  |  1999-04-03  |  2KB  |  90 lines

  1. #ifdef PEECEE
  2. #include "emul.h"
  3. #else
  4. #include <proto/exec.h>
  5. #include <proto/graphics.h>
  6. #endif
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <time.h>
  12.  
  13. #include "iff_rw.h"
  14.  
  15. /* - - Static variables  - - - - - - - - - - - - - - - - - - - - - - - */
  16.  
  17. char *r_msg = "cannot read PIC file";
  18. char *w_msg = "cannot write to coded file";
  19. char *m_msg = "insufficient memory";
  20. char line[80];
  21. int smooth_image = 0;
  22. extern struct BitMap *bm;
  23.  
  24. void Error(char * s)
  25. {
  26.   printf("\n\aError: %s\n", s);
  27.   exit(1);
  28. }
  29.  
  30. int main(int numb_arg, char **arg)
  31. {
  32.         BitMapHeader bmhd;
  33.         struct BitMap *bitmap;
  34.         BYTE   *cmap;
  35.         double CPU_time;
  36.         FILE   *temp_file;
  37.         LONG   BodyBytes;
  38.  
  39.     if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 39L)))
  40.     {
  41.         return FALSE;
  42.     }
  43.  
  44.     if (numb_arg < 3)
  45.     {
  46.         printf("\nCorrect usage:\n\n%s Old iff file New_iff file [WAVELET]\n\n", *arg);
  47.         exit(0);
  48.     }
  49.  
  50.     /*
  51.      * Check if file already exists
  52.      */
  53.     if ((temp_file = fopen(arg[2], "rb")) != NULL)
  54.     {
  55.         printf("Overwrite file %s? (y = yes, otherwise quit) ", arg[3]);
  56.         fclose(temp_file);
  57.         gets(line);
  58.         if (line[0] != 'y')
  59.         {
  60.             exit(0);
  61.         }
  62.     }
  63.  
  64.     CPU_time = (double)clock();
  65.  
  66.     if (!LoadILBM(arg[1], &bmhd, &cmap, &bitmap))
  67.     {
  68.         printf("Could not read picture\n");
  69.         return 1;
  70.     }
  71.  
  72.     switch (bmhd.compression)
  73.     {
  74.         case 1:     bmhd.compression = 2;       break;
  75.         case 2:     bmhd.compression = 1;       break;
  76.         default:    printf("Big mistake!!\n");  exit(0);
  77.     }
  78.     BodyBytes = SaveILBM(arg[2], &bmhd, cmap, bitmap);
  79.     FreeBitMap(bitmap);
  80.     if (cmap) free(cmap);
  81.  
  82.     printf("\n  Compressed file size = %ld bytes (%5.2f bpp).\n",
  83.     BodyBytes, 8.0 * BodyBytes / (float) bmhd.w / (float) bmhd.h);
  84.     printf("\n  CPU time = %6.2f s.\n", ((double) clock() - CPU_time) / (double) CLOCKS_PER_SEC);
  85.  
  86.     CloseLibrary((struct Library *)GfxBase);
  87.     return 0;
  88. }
  89.  
  90.